Introduction

This document explores what the township PIN might look like with a flat allocation, as suggested by the Global Food Security Cluster.

The consultant strongly disagrees with this and finds this to be a misallocation. There is good available data and alternatives to this approach have been developed.

Still, let us explore this mock up.




Data and references

References for this report


Additionally, the draft township-level PINs have been read into a simplet dataset here for easy comparison and comsumption.




State and Region PINs

Using the food consumption scores from the MSNA and the reduced coping strategies index from the FAO/WFP Survey Round 3, it has been possible to replicate the CARI methodology used to calculate the 2022 PIN.

Below is an explanatory chart where how each of the food consumption and coping strategies indicators relate to the 4 CARI domains.

Applying this methodology to currently available data, yields a unionwide PIN of 15,567,328. This is the total number of persons who are moderately and severely food insecure. This is a 15% increase from the 2022 PIN of 13,230,378.

IDP figures are the Q3 actuals provided by OCHA.



Presented as a table:





Township PINs

Township PINs were based on state/region PINs and pro-rated according to their population size. This approach will lead to frequent misallocations.

Additionally, this PIN breakdown is not justifiable. If we showed this breakdown to a person from each state, we would be accused of not understanding the context and not taking allocation seriously.



Ayeyarwady

Hinthada having the second-highest PIN is not commonsensical. It is a port city and one of the least vulnerable and least conflict-affected townships in the region. This should be redistributed to Labutta, Pyapon and Mawlamyinegyun. Or townships allocations can just be performed by using the conflict score and the vulnerability score.



Bago

Kyaukkyi, with the lion’s share of IDPs in the state is ranked really lowly as the conflict score was not considered. Ranked second is Taungoo, the richest part of Bago. This is Taungoo:




Chin

Chin state is mostly fine.



Kachin

A bit of shuffling around but results not entirely dissimilar from PIN calculated by conflict score and vulnerability. However, the PIN for Waingmaw is far too low. In general, all these PINs are a bit low.



Kayah

Demoso, Loikaw and Hpruso are the most vulnerable areas. However, the PINs are for these areas are a bit low.




Kayin

Myawaddy is ranked really lowly, considering it’s conflict score and number of IDPs.




Magway

Gangaw is ranked fifth in the whole country in terms of conflict events and fatalities, just behind Kale, Demoso, Pale and Yinmarbin. it also host the most IDPs in all of Magway. It’s low ranking in the list below is not commonsensical.




Mandalay

Meiktila is neither a priority for humanitarian action or development interventions. The townships with the largest PINs in Mandalay are mostly from the affluent downtown core, like Aungmyathazan and Chanmyathazi. For reference, this is Chanmyathazi:




Mon

Mawlamyine is merely the largest city. it is also, by far and away, the most affluent area in Mon. Thaton, Bilin and Kyaikmaraw, all areas of high-conflict and of extreme humanitarian interest, all fall far too low in the list.




Nay Pyi Taw

Nay Pyi Taw has no targets and was not surveyed in the FAO/WFP survey or the MSNA. It was, however, included in IFPRI. The government does not appreciate humanitarian interventions targeted at Nay Pyi Taw residents.




Rakhine

This is not a bad list – it gives precedence to Mrauk-U, Kyauktaw and Pauktaw, which are all extremely poor. Though these areas are rarely the focus of humanitarian intercventions.



Sagaing

The Sagaing results are bizarre – Kale has the most conflict events and fatalities in the country by a wide margin, yet here it is outranked in every respect by Pale, which is smaller than it and has less conflict. Pale’s figures are pushed up the IDP population.




Shan

Taunggyi is the richest city in the entire area. It also does not house that many IDPs. It should not be ranked first in terms of the PIN. It is also unjustifiable that Taunggyi has a larger proportion of its population in the PIN than places like Mongton or Mongping.



Tanintharyi

The high conflict score in Sittwe is primarily due to the massive presence of IDPs there. Together, Sittwe,



Yangon

It is inconceivable that Dagon Myothit would have a PIN of 109,269. Areas that are much poorer, such as Taikkyi should have a higher PIN than this peri-urban industrial township. Shwepyithar, ranked third, is an up-and-coming township full of hotels and shopping centres, though it also has many industrial areas. I believe Bogyoke Market is also in Shwepyithar.




Limitations of the township PINs

So far, the prioritisation exercise has bee fairly agnostic about conflict vs. pre-existing vulnerability, counting the higher of the two figures as the caseload for each township. Were a strategic decision to be made to change to focus only to conflict-affected areas, then these allocations should shift substantially.

LS0tDQp0aXRsZTogIkRSQUZUIFN0YXRlIGFuZCBUb3duc2hpcCBQSU4gYWxsb2NhdGlvbnMgLS0gUFJPLVJBVEVEIHZlcnNpb24iDQphdXRob3I6ICJbTXlhbm1hciBGb29kIFNlY3VyaXR5IENsdXN0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9mb29kLXNlY3VyaXR5LWNsdXN0ZXItbXlhbm1hcikiDQpkYXRlOiAiMjAvMDkvMjAyMiINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIHRoZW1lOiByZWFkYWJsZQ0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogZmFsc2UNCiAgICBjb2xsYXBzZWQ6IGZhbHNlDQphbHdheXNfYWxsb3dfaHRtbDogdHJ1ZSAgIA0KLS0tDQoNCmBgYHtjc3MsIGVjaG89RkFMU0V9DQoNCiNUT0M6OmJlZm9yZSB7DQogIGNvbnRlbnQ6ICIiOw0KICBkaXNwbGF5OiBibG9jazsNCiAgaGVpZ2h0OiA3MHB4Ow0KICBtYXJnaW46IDJlbSAyMHB4IDQwcHggMjBweDsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJNeWFubWFyX2NsdXN0ZXJfYmx1ZS5wbmciKTsNCiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluOw0KICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOw0KICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KfQ0KYGBgDQoNCmBgYHs9aHRtbH0NCjxzdHlsZT4NCiAgICBib2R5IC5tYWluLWNvbnRhaW5lciB7DQogICAgICAgIG1heC13aWR0aDogMTI4MHB4Ow0KICAgIH0NCjwvc3R5bGU+DQpgYGANCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRSwgZmlnLndpZHRoPTh9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShqYW5pdG9yKQ0KbGlicmFyeShoYXZlbikNCmxpYnJhcnkocHN5Y2gpDQpsaWJyYXJ5KHNraW1yKQ0KbGlicmFyeShtZGVwcml2KQ0KbGlicmFyeShicm9vbSkNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeSh3aWR5cikNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KHZpcmlkaXMpDQpsaWJyYXJ5KGNvcnJwbG90KQ0KbGlicmFyeShycGFydCkNCmxpYnJhcnkocnBhcnQudXRpbHMpDQpsaWJyYXJ5KHJhdHRsZSkNCmxpYnJhcnkocnBhcnQucGxvdCkNCmxpYnJhcnkocmFuZG9tRm9yZXN0KQ0KbGlicmFyeShicm9vbXN0aWNrKQ0KbGlicmFyeShwYXRjaHdvcmspDQpsaWJyYXJ5KHRpZHltb2RlbHMpDQpsaWJyYXJ5KHZpcCkNCmxpYnJhcnkoZ2xtbmV0KQ0KbGlicmFyeSh0aWR5dGV4dCkNCmxpYnJhcnkoZmxleHRhYmxlKQ0KbGlicmFyeShza2ltcikNCmxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQoNCnJhbmdlMDEgPC0gZnVuY3Rpb24oeCl7KHgtbWluKHgpKS8obWF4KHgpLW1pbih4KSl9DQpyYW5nZV93bmEgPC0gZnVuY3Rpb24oeCl7KHgtbWluKHgsIG5hLnJtID0gVFJVRSkpLyhtYXgoeCwgbmEucm0gPSBUUlVFKS1taW4oeCwgbmEucm0gPSBUUlVFKSl9DQoNCm1vZGUgPC0gZnVuY3Rpb24oeCkgew0KICB1eCA8LSB1bmlxdWUoeCkNCiAgdXhbd2hpY2gubWF4KHRhYnVsYXRlKG1hdGNoKHgsIHV4KSkpXQ0KfQ0KDQpvcHRzIDwtIG9wdGlvbnMoa25pdHIua2FibGUuTkEgPSAiIikNCg0KYCVvdXQlYCA8LSBOZWdhdGUoYCVpbiVgKQ0KDQojIGRpc2FibGluZyBzY2llbnRpZmljIG5vdGF0aW9uDQpvcHRpb25zKHNjaXBlbiA9IDk5OSkNCg0KdGhlbWVfc2V0KHRoZW1lX2xpZ2h0KCkpDQpgYGANCg0KPGJyPjxicj48YnI+DQoNCiMjIEludHJvZHVjdGlvbiANCg0KVGhpcyBkb2N1bWVudCBleHBsb3JlcyB3aGF0IHRoZSB0b3duc2hpcCBQSU4gbWlnaHQgbG9vayBsaWtlIHdpdGggYSBmbGF0IGFsbG9jYXRpb24sIGFzIHN1Z2dlc3RlZCBieSB0aGUgR2xvYmFsIEZvb2QgU2VjdXJpdHkgQ2x1c3Rlci4NCg0KVGhlIGNvbnN1bHRhbnQgc3Ryb25nbHkgZGlzYWdyZWVzIHdpdGggdGhpcyBhbmQgZmluZHMgdGhpcyB0byBiZSBhIG1pc2FsbG9jYXRpb24uIFRoZXJlIGlzIGdvb2QgYXZhaWxhYmxlIGRhdGEgYW5kIGFsdGVybmF0aXZlcyB0byB0aGlzIGFwcHJvYWNoIGhhdmUgYmVlbiBkZXZlbG9wZWQuIA0KDQpTdGlsbCwgbGV0IHVzIGV4cGxvcmUgdGhpcyBtb2NrIHVwLiANCg0KPGJyPjxicj48YnI+DQoNCiMjIERhdGEgYW5kIHJlZmVyZW5jZXMNCg0KDQojIyMgUmVmZXJlbmNlcyBmb3IgdGhpcyByZXBvcnQNCg0KKiBBQ0xFRCwgKDIwMjIpLiBBQ0xFRCBkYXRhIGZvciBNeWFubWFyICgyMDEwLTIwMjIpLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL2FjbGVkZGF0YS5jb20gb24gMjAyMi0wNi0wNi4gDQoqIEludGVybmF0aW9uYWwgRm9vZCBQb2xpY3kgUmVzZWFyY2ggSW5zdGl0dXRlICgyMDIyKS4gTXlhbm1hciBIb3VzZWhvbGQgV2VsZmFyZSBTdXJ2ZXkgKE1IV1MpLCBSb3VuZCAxLiBIYXJ2YXJkIERhdGF2ZXJzZSwgZG9pOiAxMC43OTEwL0RWTi8xUjNGM1UsLiBSZXRyaWV2ZWQgZnJvbSBodHRwczovL2RvaS5vcmcvMTAuNzkxMC9EVk4vMVIzRjNVIG9uIDIwMjItMDktMDEuIA0KKiBGQU8gYW5kIFdGUCAoMjAyMikuIEZvb2QgU2VjdXJpdHkgTW9uaXRvcmluZyBTdXJ2ZXkgUm91bmQgMy4gRkFPIGFuZCBXRlAuIA0KKiBGb29kIFNlY3VyaXR5IENsdXN0ZXIgTXlhbm1hciAoMjAyMikuIFRvd25zaGlwIFByaW9yaXRpc2F0aW9uLiBodHRwczovL2Zvb2Qtc2VjdXJpdHktY2x1c3Rlci1teWFubWFyLmdpdGh1Yi5pby9tbXJfdG93bnNoaXBfcHJpb3JpdGlzYXRpb24vLiANCiogRm9vZCBTZWN1cml0eSBDbHVzdGVyLCBNeWFubWFyICgyMDIyKS4gVW5kZXJzdGFuZGluZyBDb25mbGljdCBEeW5hbWljcyBpbiBNeWFubWFyIHRocm91Z2ggQ29uZmxpY3QgYW5kIEluY2lkZW50IERhdGE6IEEgRm9vZCBTZWN1cml0eSBQZXJzcGVjdGl2ZS4gaHR0cHM6Ly9mb29kLXNlY3VyaXR5LWNsdXN0ZXItbXlhbm1hci5naXRodWIuaW8vZXhwbG9yYXRvcnktZGF0YS1hbmFseXNpcy1hY2xlZC1mc2MvLg0KKiBIQVJQLUYgYW5kIE1JTVUgKDIwMTgpLiBWdWxuZXJhYmlsaXR5IGluIE15YW5tYXI6IEEgU2Vjb25kYXJ5IERhdGEgUmV2aWV3IG9mIE5lZWRzLCBDb3ZlcmFnZSBhbmQgR2Fwcy4gaHR0cDovL3RoZW1pbXUuaW5mby92dWxuZXJhYmlsaXR5LWluLW15YW5tYXIuDQoqIFJFQUNIICgyMDIyKS4gTXlhbm1hciBNdWx0aS1zZWN0b3IgTmVlZHMgQXNzZXNzbWVudC4gUkVBQ0guIA0KDQoNCmBgYHtyIGRhdGFzZXRzLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcGNvZGVzIDwtIHJlYWRfZXhjZWwoIi4vZGF0YS9NeWFubWFyIFBDb2RlcyBSZWxlYXNlXzkuM19KYW4yMDIxXyhTdFJnbl9EaXN0X1RzcF9Ub3duX1dhcmRfVlQpLnhsc3giLA0KICAgICAgICAgICAgICAgICAgICAgc2hlZXQgPSAiMDNfVG93bnNoaXAiKSANCg0KY29uZmxpY3Rfc2NvcmUgPC0gIHJlYWRfY3N2KCIuL2RhdGEvY29uZmxpY3Rfc2NvcmVfMjAyMjA5MjAuY3N2IikgDQoNCnBpbiA8LSByZWFkX2NzdigiLi9kYXRhL2ZzX3Bpbi5jc3YiKSANCg0Kc3VydmV5IDwtIHJlYWRfY3N2KCIuL2RhdGEvc3VydmV5My5jc3YiKSAlPiUgDQogIG11dGF0ZShyY3NpID0gDQogICAgICAgICAgIHJfY3NpX2xlc3NfcWx0eSAqIDEgKyANCiAgICAgICAgICAgcl9jc2lfYm9ycm93ICogMiArIA0KICAgICAgICAgICByX2NzaV9tZWFsX25iICogMSArIA0KICAgICAgICAgICByX2NzaV9tZWFsX3NpemUgKiAxICsgDQogICAgICAgICAgIHJfY3NpX21lYWxfYWR1bHQgKiAzLCANCiAgICAgICAgIHJjc2lfcmFuZ2UgPSByYW5nZV93bmEocmNzaSkpDQoNCm1zbmEgPC0gcmVhZF9jc3YoIi4vZGF0YS9tc25hLmNzdiIpDQoNCmlkcHMgPC0gcmVhZF9jc3YoIi4vZGF0YS9pZHBzLmNzdiIpICU+JSANCiAgY2xlYW5fbmFtZXMoKSAlPiUgDQogIGZpbHRlcih0b3duc2hpcCAhPSAiSGxhaW5ndGhheXJhIChXZXN0KSIpICU+JSANCiAgbXV0YXRlKHRvd25zaGlwID0gcmVjb2RlKHRvd25zaGlwLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJIbGFpbmd0aGF5cmEgKEVhc3R0KSIgPSAiSGxhaW5ndGhhcnlhIiksIA0KICAgICAgICAgcG9wdWxhdGlvbiA9IGlmZWxzZSh0b3duc2hpcCA9PSAiSGxhaW5ndGhhcnlhIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxODI3NS44MDkgKyAyMDE2MDkuODk0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wdWxhdGlvbikpDQoNCnI0IDwtIHJlYWRfY3N2KCIuL2RhdGEvcm91bmQ0X3N1bW1hcnkuY3N2IikgJT4lIA0KICBtdXRhdGUoc3RhdGUgPSByZWNvZGUoc3RhdGUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIkF5ZXlhd2FkeSIgPSAiQXlleWFyd2FkeSIpKQ0KDQpgYGANCg0KPGJyPg0KDQpBZGRpdGlvbmFsbHksIHRoZSBkcmFmdCB0b3duc2hpcC1sZXZlbCBQSU5zIGhhdmUgYmVlbiByZWFkIGludG8gYSBzaW1wbGV0IGRhdGFzZXQgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mb29kLXNlY3VyaXR5LWNsdXN0ZXItbXlhbm1hci9hbGxvY2F0aW9uX3Byb3Bvc2FsL3Jhdy9tYWluL2RhdGEvZHJhZnRfcGluX2RhdGFzZXQueGxzeCkgZm9yIGVhc3kgY29tcGFyaXNvbiBhbmQgY29tc3VtcHRpb24uIA0KDQoNCjxicj48YnI+PGJyPg0KDQoNCiMjIFN0YXRlIGFuZCBSZWdpb24gUElOcw0KDQoNCg0KVXNpbmcgdGhlIGZvb2QgY29uc3VtcHRpb24gc2NvcmVzIGZyb20gdGhlIE1TTkEgYW5kIHRoZSByZWR1Y2VkIGNvcGluZyBzdHJhdGVnaWVzIGluZGV4IGZyb20gdGhlIEZBTy9XRlAgU3VydmV5IFJvdW5kIDMsIGl0IGhhcyBiZWVuIHBvc3NpYmxlIHRvIHJlcGxpY2F0ZSB0aGUgQ0FSSSBtZXRob2RvbG9neSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgMjAyMiBQSU4uIA0KDQpCZWxvdyBpcyBhbiBleHBsYW5hdG9yeSBjaGFydCB3aGVyZSBob3cgZWFjaCBvZiB0aGUgZm9vZCBjb25zdW1wdGlvbiBhbmQgY29waW5nIHN0cmF0ZWdpZXMgaW5kaWNhdG9ycyByZWxhdGUgdG8gdGhlIDQgQ0FSSSBkb21haW5zLiANCg0KIVtdKC4vaW1nL2NhcmkucG5nKQ0KDQpgYGB7ciBldmFsID0gRkFMU0V9DQpuYXQgJT4lIHN1bW1hcmlzZV9hdCgiUElOIiwgc3VtKQ0KDQoNCigxNTU2NzMyOCAtIDEzMjMwMzc4KSAvIDE1NTY3MzI4DQpgYGANCg0KDQpBcHBseWluZyB0aGlzIG1ldGhvZG9sb2d5IHRvIGN1cnJlbnRseSBhdmFpbGFibGUgZGF0YSwgeWllbGRzIGEgdW5pb253aWRlIFBJTiBvZiAxNSw1NjcsMzI4LiBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgcGVyc29ucyB3aG8gYXJlIG1vZGVyYXRlbHkgYW5kIHNldmVyZWx5IGZvb2QgaW5zZWN1cmUuIFRoaXMgaXMgYSAxNSUgaW5jcmVhc2UgZnJvbSB0aGUgMjAyMiBQSU4gb2YgMTMsMjMwLDM3OC4gDQoNCklEUCBmaWd1cmVzIGFyZSB0aGUgUTMgYWN0dWFscyBwcm92aWRlZCBieSBPQ0hBLiANCg0KPGJyPg0KDQpgYGB7ciB3YXJuaW5nPUZBTFNFLCBmaWcud2lkdGg9OX0NCnI0ICU+JSANCiAgZmlsdGVyKHN0YXRlICE9ICJOYXkgUHlpIFRhdyIpICU+JSANCiAgbXV0YXRlX2F0KHZhcnMoZm9vZF9zZWN1cmU6aW5zZWN1cmVfcGMpLA0KICAgICAgICAgICAgfiBhcy5kb3VibGUoc3RyX3JlbW92ZV9hbGwoLngsICJcXCUiKSkpICU+JSANCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKGZvb2Rfc2VjdXJlOnNldmVyZWx5X2luc2VjdXJlKSkgJT4lIA0KICBnZ3Bsb3QoYWVzKHkgPSB2YWx1ZSwNCiAgICAgICAgICAgICB4ID0gZmN0X3JlbGV2ZWwoc3RhdGUsIGMoIkNoaW4iLCAiUmFraGluZSIsICJLYXlhaCIsICJNYWd3YXkiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktheWluIiwgIkthY2hpbiIsICJCYWdvIiwgIk1vbiIsICJTYWdhaW5nIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUYW5pbnRoYXJ5aSIsICJZYW5nb24iLCAiU2hhbiIsICJBeWV5YXJ3YWR5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYW5kYWxheSIpKSwgDQogICAgICAgICAgICAgZmlsbCA9IGZjdF9yZWxldmVsKG5hbWUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJmb29kX3NlY3VyZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXJnaW5hbGx5X3NlY3VyZSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlcmF0ZWx5X2luc2VjdXJlIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNldmVyZWx5X2luc2VjdXJlIikpKSkgICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjaygpKSArIA0KICBnZW9tX3RleHQoYWVzKGxhYmVsID0gdmFsdWUpLCANCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAuNSksDQogICAgICAgICAgICBzaXplID0gMikgKyANCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzREQjZBQyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiM4MENCQzQiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiI0Y1N0YxNyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjQkYzNjBDIikpICsgDQogIGxhYnMoZmlsbCA9ICIiLCANCiAgICAgICB4ID0gIiIsIA0KICAgICAgIHkgPSAiUGVyY2VudGFnZSBvZiBwb3B1bGF0aW9uIiwgDQogICAgICAgdGl0bGUgPSAiQ0FSSSBkb21haW5zIGJ5IHN0YXRlIiwgDQogICAgICAgc3VidGl0bGUgPSAiRkFPL1dGUCBSb3VuZCA0IikgKw0KICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSksIA0KICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDEpKQ0KDQpgYGANCjxicj4NCg0KDQpQcmVzZW50ZWQgYXMgYSB0YWJsZTogDQoNCjxicj4NCg0KDQoNCmBgYHtyfQ0KcjQgJT4lIA0KICBzZWxlY3Qoc3RhdGUsIA0KICAgICAgICAgcG9wdWxhdGlvbiwgDQogICAgICAgICBgbW9kZXJhdGVseSBpbnNlY3VyZSBwZXJzb25zYCA9IG1vZGVyYXRlbHlfcGVyc29ucywgDQogICAgICAgICBgc2V2ZXJlbHkgaW5zZWN1cmUgcGVyc29uc2AgPSBzZXZlcmVseV9wZXJzb25zLCANCiAgICAgICAgIGBhbGwgZm9vZCBpbnNlY3VyZWAgPSBpbnNlY3VyZV9wZXJzb25zLCANCiAgICAgICAgICkgJT4lIA0KICBsZWZ0X2pvaW4oaWRwcyAlPiUgDQogICAgICAgICAgICAgICBtdXRhdGUoc3RhdGUgPSByZWNvZGUoc3RhdGUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIkJhZ28gKEVhc3QpIiA9ICJCYWdvIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAiQmFnbyAoV2VzdCkiID0gIkJhZ28iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICJTaGFuIChOb3J0aCkiID0gIlNoYW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICJTaGFuIChFYXN0KSIgPSAiU2hhbiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIlNoYW4gKFNvdXRoKSIgPSAiU2hhbiIpKSAlPiUgDQogICAgICAgICAgICAgIGdyb3VwX2J5KHN0YXRlKSAlPiUgDQogICAgICAgICAgICAgIA0KICAgICAgICAgICAgICBzdW1tYXJpc2UoSURQcyA9IHN1bShpZF9wcywgbmEucm0gPSBUUlVFKSksIA0KICAgICAgICAgICAgYnkgPSAic3RhdGUiKSAlPiUgDQogIG11dGF0ZShQSU4gPSBgYWxsIGZvb2QgaW5zZWN1cmVgICsgSURQcykgJT4lIA0KICBhcnJhbmdlKGRlc2MoUElOKSkgJT4lIA0KICBhZG9ybl90b3RhbHMoInJvdyIpICU+JQ0KICBtdXRhdGUoYCVfcG9wYCA9IHJvdW5kKFBJTiAvIHBvcHVsYXRpb24gKiAxMDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIpKSU+JQ0KICAgIGZsZXh0YWJsZSgpICU+JSANCiAgc2V0X2NhcHRpb24oIkZBTy9XRlAgUm91bmQgNCBQSU4gZXN0aW1hdGVzIikgJT4lIA0KICB0aGVtZV96ZWJyYSgpDQpgYGANCg0KDQoNCjxicj48YnI+PGJyPg0KDQoNCg0KDQojIyBUb3duc2hpcCBQSU5zDQoNClRvd25zaGlwIFBJTnMgd2VyZSBiYXNlZCBvbiBzdGF0ZS9yZWdpb24gUElOcyBhbmQgcHJvLXJhdGVkIGFjY29yZGluZyB0byB0aGVpciBwb3B1bGF0aW9uIHNpemUuIFRoaXMgYXBwcm9hY2ggd2lsbCBsZWFkIHRvIGZyZXF1ZW50IG1pc2FsbG9jYXRpb25zLiANCg0KQWRkaXRpb25hbGx5LCB0aGlzIFBJTiBicmVha2Rvd24gaXMgbm90IGp1c3RpZmlhYmxlLiBJZiB3ZSBzaG93ZWQgdGhpcyBicmVha2Rvd24gdG8gYSBwZXJzb24gZnJvbSBlYWNoIHN0YXRlLCB3ZSB3b3VsZCBiZSBhY2N1c2VkIG9mIG5vdCB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IGFuZCBub3QgdGFraW5nIGFsbG9jYXRpb24gc2VyaW91c2x5LiANCg0KDQpgYGB7cn0NCm5hdCA8LSBwaW4gJT4lIA0KICBtdXRhdGUoc3RhdGUgPSByZWNvZGUoc3RhdGUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIkJhZ28gKEVhc3QpIiA9ICJCYWdvIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAiQmFnbyAoV2VzdCkiID0gIkJhZ28iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICJTaGFuIChOb3J0aCkiID0gIlNoYW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICJTaGFuIChFYXN0KSIgPSAiU2hhbiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgIlNoYW4gKFNvdXRoKSIgPSAiU2hhbiIpKSAlPiUNCiAgbGVmdF9qb2luKGlkcHMgJT4lIA0KICAgICAgICAgICAgICBzZWxlY3QoYWRtaW4zX3Bjb2RlID0gdG93bnNoaXBfcGNvZGUsIA0KICAgICAgICAgICAgICAgICAgICAgSURQcyA9IGlkX3BzLCANCiAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRpb24pLCANCiAgICAgICAgICAgIGJ5ID0gImFkbWluM19wY29kZSIpICU+JSANCiAgbGVmdF9qb2luKHI0ICU+JSBzZWxlY3Qoc3RhdGUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlY3VyZV9wYywgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VjdXJlX3BlcnNvbnMpLCANCiAgICAgICAgICAgIGJ5ID0gInN0YXRlIikgICU+JSANCiAgc2VsZWN0KHN0YXRlLCB0b3duc2hpcCwgDQogICAgICAgICB2dWxfc2NvcmUgPSBtZHBfYWRqdXN0LCANCiAgICAgICAgIGNvbmZsaWN0X3Njb3JlLCANCiAgICAgICAgIGluc2VjdXJlX3BjLA0KICAgICAgICAgaW5zZWN1cmVfcGVyc29ucywgDQogICAgICAgICBJRFBzLCANCiAgICAgICAgIHBvcHVsYXRpb24sIA0KICAgICAgICAgYWRtaW4zX3Bjb2RlKSAlPiUgDQogIG11dGF0ZShwb3B1bGF0aW9uID0gaWZlbHNlKHRvd25zaGlwID09ICJIbGFpbmd0aGFyeWEiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxOTg4NiwgcG9wdWxhdGlvbikpICU+JSANCiAgcmVwbGFjZV9uYShsaXN0KElEUHMgPSAwKSkgJT4lIA0KICBtdXRhdGVfYXQodmFycyhpbnNlY3VyZV9wYyksDQogICAgICAgICAgICB+IGFzLmRvdWJsZShzdHJfcmVtb3ZlX2FsbCgueCwgIlxcJSIpKSkgJT4lIA0KICBtdXRhdGVfYXQodmFycyhjb25mbGljdF9zY29yZSwgdnVsX3Njb3JlKSwgDQogICAgICAgICAgICB+IHJhbmdlX3duYShzY2FsZSguKSkpICU+JSANCiAgbXV0YXRlKGNvbmZsaWN0X2FmZmVjdGVkID0gY29uZmxpY3Rfc2NvcmUgKiBwb3B1bGF0aW9uLCANCiAgICAgICAgIHByZV9leF92dWxuZXJhYmxlID0gdnVsX3Njb3JlICogcG9wdWxhdGlvbikgJT4lIA0KICBtdXRhdGUodnVsX3BvcCA9IHBtYXgodnVsX3Njb3JlICogIHBvcHVsYXRpb24sIGNvbmZsaWN0X3Njb3JlICogcG9wdWxhdGlvbiwgbmEucm0gPSBUUlVFKSwgDQogICAgICAgICB2dWxfcG9wX3Njb3JlID0gcG1heCh2dWxfc2NvcmUsIGNvbmZsaWN0X3Njb3JlLCBuYS5ybSA9IFRSVUUpLCANCiAgICAgICAgIGNhc2Vsb2FkID0gdnVsX3BvcCArIElEUHMpICU+JSANCiAgZ3JvdXBfYnkoc3RhdGUpICU+JSANCiAgbXV0YXRlKGNhc2Vsb2FkX3BjID0gY2FzZWxvYWQgLyBzdW0oY2FzZWxvYWQsIG5hLnJtID0gVFJVRSksIA0KICAgICAgICAgUElOID0gcG9wdWxhdGlvbiAvIHN1bShwb3B1bGF0aW9uKSAqIGluc2VjdXJlX3BlcnNvbnMgKyBJRFBzLCANCiAgICAgICAgIHBjX3BpbiA9IFBJTiAvIHN1bShQSU4sIG5hLnJtID0gVFJVRSkpICU+JSANCiAgdW5ncm91cCgpICU+JSANCiAgbXV0YXRlKHBjX3BvcCA9IFBJTiAvIHBvcHVsYXRpb24pICU+JSANCiAgZG8uY2FsbChkYXRhLmZyYW1lLCAuKSAlPiUgDQogIGFzX3RpYmJsZSgpDQogIA0KICANCmBgYA0KDQoNCmBgYHtyfQ0KbmF0X3RhYmxlIDwtIGZ1bmN0aW9uKHRibCl7DQogIHRibCAlPiUgDQogIG11dGF0ZV9hdCh2YXJzKHZ1bF9zY29yZSwgY29uZmxpY3Rfc2NvcmUsIA0KICAgICAgICAgICAgICAgICB2dWxfcG9wX3Njb3JlLCBjYXNlbG9hZF9wYywgDQogICAgICAgICAgICAgICAgIHBjX3BpbiwgcGNfcG9wKSwgDQogICAgICAgICAgICB+IHJvdW5kKC54ICogMTAwLCBkaWdpdHMgPSAyKSkgJT4lIA0KICBtdXRhdGVfYXQodmFycyhpbnNlY3VyZV9wZXJzb25zLCBJRFBzLCBwb3B1bGF0aW9uLCANCiAgICAgICAgICAgICAgICAgdnVsX3BvcCwgY2FzZWxvYWQsIFBJTiwgDQogICAgICAgICAgICAgICAgIGNvbmZsaWN0X2FmZmVjdGVkLCANCiAgICAgICAgICAgICAgICAgcHJlX2V4X3Z1bG5lcmFibGUpLCANCiAgICAgICAgICAgIH4gcm91bmQoLngpKSAlPiUgDQogIHNlbGVjdCh0b3duc2hpcCwgDQogICAgICAgICBwb3B1bGF0aW9uLCANCiAgICAgICAgIGBjb25mbGljdCBzY29yZWAgPSBjb25mbGljdF9zY29yZSwNCiAgICAgICAgIGBjb25mbGljdCBhZmZlY3RlZGAgPSBjb25mbGljdF9hZmZlY3RlZCwNCiAgICAgICAgIGB2dWxuZXJhYmlsaXR5IHNjb3JlYCA9IHZ1bF9zY29yZSwgDQogICAgICAgICBgcHJlLWV4IHZ1bG5lcmFibGVgID0gcHJlX2V4X3Z1bG5lcmFibGUsIA0KICAgICAgICAgSURQcywgDQogICAgICAgICBQSU4gDQogICAgICAgICApICU+JQ0KICAgIG11dGF0ZShgJV9QSU5gID0gcm91bmQoUElOIC8gc3VtKFBJTikgKiAxMDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gMikpICU+JSANCiAgICBhcnJhbmdlKGRlc2MoUElOKSkgJT4lIA0KICAgIGFkb3JuX3RvdGFscygicm93IikgJT4lDQogICAgbXV0YXRlKGAlX3BvcGAgPSByb3VuZChQSU4gLyBwb3B1bGF0aW9uICogMTAwLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIpKSAlPiUgDQogICAgbXV0YXRlKGAlX1BJTmAgPSBpZmVsc2UodG93bnNoaXAgPT0gIlRvdGFsIiwgMTAwLCBgJV9QSU5gKSkgJT4lIA0KICAgIGZsZXh0YWJsZSgpICU+JSANCiAgICBzZXRfY2FwdGlvbigiUHJvcG9zZWQgUElOIGJyZWFrZG93biBieSB0b3duc2hpcCIpICU+JSANCiAgICB0aGVtZV96ZWJyYSgpICU+JSANCiAgICBmb250c2l6ZShzaXplID0gMTAsIHBhcnQgPSAiYWxsIikgIA0KICAgIA0KfQ0KDQpgYGANCg0KPGJyPjxicj4NCg0KIyMjIEF5ZXlhcndhZHkgDQoNCkhpbnRoYWRhIGhhdmluZyB0aGUgc2Vjb25kLWhpZ2hlc3QgUElOIGlzIG5vdCBjb21tb25zZW5zaWNhbC4gSXQgaXMgYSBwb3J0IGNpdHkgYW5kIG9uZSBvZiB0aGUgbGVhc3QgdnVsbmVyYWJsZSBhbmQgbGVhc3QgY29uZmxpY3QtYWZmZWN0ZWQgdG93bnNoaXBzIGluIHRoZSByZWdpb24uIFRoaXMgc2hvdWxkIGJlIHJlZGlzdHJpYnV0ZWQgdG8gTGFidXR0YSwgUHlhcG9uIGFuZCBNYXdsYW15aW5lZ3l1bi4gT3IgdG93bnNoaXBzIGFsbG9jYXRpb25zIGNhbiBqdXN0IGJlIHBlcmZvcm1lZCBieSB1c2luZyB0aGUgY29uZmxpY3Qgc2NvcmUgYW5kIHRoZSB2dWxuZXJhYmlsaXR5IHNjb3JlLiANCg0KDQpgYGB7cn0NCm5hdCAlPiUNCiAgZmlsdGVyKHN0YXRlID09ICJBeWV5YXJ3YWR5IikgJT4lDQogIG5hdF90YWJsZSgpDQoNCmBgYA0KDQo8YnI+PGJyPg0KDQojIyMgQmFnbw0KDQpLeWF1a2t5aSwgd2l0aCB0aGUgbGlvbidzIHNoYXJlIG9mIElEUHMgaW4gdGhlIHN0YXRlIGlzIHJhbmtlZCByZWFsbHkgbG93bHkgYXMgdGhlIGNvbmZsaWN0IHNjb3JlIHdhcyBub3QgY29uc2lkZXJlZC4gUmFua2VkIHNlY29uZCBpcyBUYXVuZ29vLCB0aGUgcmljaGVzdCBwYXJ0IG9mIEJhZ28uIFRoaXMgaXMgVGF1bmdvbzogDQoNCiFbXSguL2ltZy90YXVuZ29vLmpwZykNCg0KPGJyPg0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiQmFnbyIpICU+JSANCiAgbmF0X3RhYmxlKCkNCiAgDQpgYGANCg0KPGJyPjxicj4NCg0KIyMjIENoaW4gDQoNCkNoaW4gc3RhdGUgaXMgbW9zdGx5IGZpbmUuIA0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiQ2hpbiIpICU+JSANCiAgbmF0X3RhYmxlKCkNCmBgYA0KDQoNCjxicj48YnI+DQogDQojIyMgS2FjaGluDQoNCkEgYml0IG9mIHNodWZmbGluZyBhcm91bmQgYnV0IHJlc3VsdHMgbm90IGVudGlyZWx5IGRpc3NpbWlsYXIgZnJvbSBQSU4gY2FsY3VsYXRlZCBieSBjb25mbGljdCBzY29yZSBhbmQgdnVsbmVyYWJpbGl0eS4gSG93ZXZlciwgdGhlIFBJTiBmb3IgV2FpbmdtYXcgaXMgZmFyIHRvbyBsb3cuIEluIGdlbmVyYWwsIGFsbCB0aGVzZSBQSU5zIGFyZSBhIGJpdCBsb3cuIA0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiS2FjaGluIikgJT4lIA0KICBuYXRfdGFibGUoKQ0KYGBgDQoNCjxicj48YnI+DQoNCiMjIyBLYXlhaCANCg0KRGVtb3NvLCBMb2lrYXcgYW5kIEhwcnVzbyBhcmUgdGhlIG1vc3QgdnVsbmVyYWJsZSBhcmVhcy4gSG93ZXZlciwgdGhlIFBJTnMgYXJlIGZvciB0aGVzZSBhcmVhcyBhcmUgYSBiaXQgbG93LiANCg0KPGJyPg0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiS2F5YWgiKSAlPiUgDQogIG5hdF90YWJsZSgpDQoNCmBgYA0KDQo8YnI+PGJyPg0KDQojIyMgS2F5aW4NCg0KTXlhd2FkZHkgaXMgcmFua2VkIHJlYWxseSBsb3dseSwgY29uc2lkZXJpbmcgaXQncyBjb25mbGljdCBzY29yZSBhbmQgbnVtYmVyIG9mIElEUHMuIA0KDQo8YnI+IA0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiS2F5aW4iKSAlPiUgDQogIG5hdF90YWJsZSgpDQpgYGANCg0KDQo8YnI+PGJyPg0KDQojIyMgTWFnd2F5DQoNCkdhbmdhdyBpcyByYW5rZWQgZmlmdGggaW4gdGhlIHdob2xlIGNvdW50cnkgaW4gdGVybXMgb2YgY29uZmxpY3QgZXZlbnRzIGFuZCBmYXRhbGl0aWVzLCBqdXN0IGJlaGluZCBLYWxlLCBEZW1vc28sIFBhbGUgYW5kIFlpbm1hcmJpbi4gaXQgYWxzbyBob3N0IHRoZSBtb3N0IElEUHMgaW4gYWxsIG9mIE1hZ3dheS4gSXQncyBsb3cgcmFua2luZyBpbiB0aGUgbGlzdCBiZWxvdyBpcyBub3QgY29tbW9uc2Vuc2ljYWwuIA0KDQo8YnI+DQoNCmBgYHtyfQ0KbmF0ICU+JSANCiAgZmlsdGVyKHN0YXRlID09ICJNYWd3YXkiKSAlPiUgDQogIG5hdF90YWJsZSgpDQpgYGANCg0KPGJyPjxicj4NCg0KIyMjIE1hbmRhbGF5DQoNCk1laWt0aWxhIGlzIG5laXRoZXIgYSBwcmlvcml0eSBmb3IgaHVtYW5pdGFyaWFuIGFjdGlvbiBvciBkZXZlbG9wbWVudCBpbnRlcnZlbnRpb25zLiBUaGUgdG93bnNoaXBzIHdpdGggdGhlIGxhcmdlc3QgUElOcyBpbiBNYW5kYWxheSBhcmUgbW9zdGx5IGZyb20gdGhlIGFmZmx1ZW50IGRvd250b3duIGNvcmUsIGxpa2UgQXVuZ215YXRoYXphbiBhbmQgQ2hhbm15YXRoYXppLiBGb3IgcmVmZXJlbmNlLCB0aGlzIGlzIENoYW5teWF0aGF6aTogDQoNCiFbXSguL2ltZy9jaGFubXlhdGhhemkuanBnKQ0KDQo8YnI+DQoNCmBgYHtyfQ0KbmF0ICU+JSANCiAgZmlsdGVyKHN0YXRlID09ICJNYW5kYWxheSIpICU+JSANCiAgbmF0X3RhYmxlKCkNCmBgYA0KDQoNCjxicj48YnI+DQoNCiMjIyBNb24NCg0KTWF3bGFteWluZSBpcyBtZXJlbHkgdGhlIGxhcmdlc3QgY2l0eS4gaXQgaXMgYWxzbywgYnkgZmFyIGFuZCBhd2F5LCB0aGUgbW9zdCBhZmZsdWVudCBhcmVhIGluIE1vbi4gVGhhdG9uLCBCaWxpbiBhbmQgS3lhaWttYXJhdywgYWxsIGFyZWFzIG9mIGhpZ2gtY29uZmxpY3QgYW5kIG9mIGV4dHJlbWUgaHVtYW5pdGFyaWFuIGludGVyZXN0LCBhbGwgZmFsbCBmYXIgdG9vIGxvdyBpbiB0aGUgbGlzdC4gDQoNCjxicj4NCg0KYGBge3J9DQpuYXQgJT4lIA0KICBmaWx0ZXIoc3RhdGUgPT0gIk1vbiIpICU+JSANCiAgbmF0X3RhYmxlKCkNCmBgYA0KDQo8YnI+PGJyPg0KDQojIyMgTmF5IFB5aSBUYXcNCg0KTmF5IFB5aSBUYXcgaGFzIG5vIHRhcmdldHMgYW5kIHdhcyBub3Qgc3VydmV5ZWQgaW4gdGhlIEZBTy9XRlAgc3VydmV5IG9yIHRoZSBNU05BLiBJdCB3YXMsIGhvd2V2ZXIsIGluY2x1ZGVkIGluIElGUFJJLiBUaGUgZ292ZXJubWVudCBkb2VzIG5vdCBhcHByZWNpYXRlIGh1bWFuaXRhcmlhbiBpbnRlcnZlbnRpb25zIHRhcmdldGVkIGF0IE5heSBQeWkgVGF3IHJlc2lkZW50cy4NCg0KPGJyPg0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiTmF5IFB5aSBUYXciKSAlPiUgDQogIG5hdF90YWJsZSgpDQpgYGANCg0KDQo8YnI+PGJyPg0KDQojIyMgUmFraGluZQ0KDQpUaGlzIGlzIG5vdCBhIGJhZCBsaXN0IC0tIGl0IGdpdmVzIHByZWNlZGVuY2UgdG8gTXJhdWstVSwgS3lhdWt0YXcgYW5kIFBhdWt0YXcsIHdoaWNoIGFyZSBhbGwgZXh0cmVtZWx5IHBvb3IuIFRob3VnaCB0aGVzZSBhcmVhcyBhcmUgcmFyZWx5IHRoZSBmb2N1cyBvZiBodW1hbml0YXJpYW4gaW50ZXJjdmVudGlvbnMuIA0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiUmFraGluZSIpICU+JSANCiAgbmF0X3RhYmxlKCkNCmBgYA0KDQo8YnI+PGJyPg0KDQojIyMgU2FnYWluZw0KDQpUaGUgU2FnYWluZyByZXN1bHRzIGFyZSBiaXphcnJlIC0tIEthbGUgaGFzIHRoZSBtb3N0IGNvbmZsaWN0IGV2ZW50cyBhbmQgZmF0YWxpdGllcyBpbiB0aGUgY291bnRyeSBieSBhIHdpZGUgbWFyZ2luLCB5ZXQgaGVyZSBpdCBpcyBvdXRyYW5rZWQgaW4gZXZlcnkgcmVzcGVjdCBieSBQYWxlLCB3aGljaCBpcyBzbWFsbGVyIHRoYW4gaXQgYW5kIGhhcyBsZXNzIGNvbmZsaWN0LiBQYWxlJ3MgZmlndXJlcyBhcmUgcHVzaGVkIHVwIHRoZSBJRFAgcG9wdWxhdGlvbi4gDQoNCjxicj4NCg0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiU2FnYWluZyIpICU+JSANCiAgbmF0X3RhYmxlKCkNCmBgYA0KDQoNCjxicj48YnI+DQoNCiMjIyBTaGFuIA0KDQpUYXVuZ2d5aSBpcyB0aGUgcmljaGVzdCBjaXR5IGluIHRoZSBlbnRpcmUgYXJlYS4gSXQgYWxzbyBkb2VzIG5vdCBob3VzZSB0aGF0IG1hbnkgSURQcy4gSXQgc2hvdWxkIG5vdCBiZSByYW5rZWQgZmlyc3QgaW4gdGVybXMgb2YgdGhlIFBJTi4gSXQgaXMgYWxzbyB1bmp1c3RpZmlhYmxlIHRoYXQgVGF1bmdneWkgaGFzIGEgbGFyZ2VyIHByb3BvcnRpb24gb2YgaXRzIHBvcHVsYXRpb24gaW4gdGhlIFBJTiB0aGFuIHBsYWNlcyBsaWtlIE1vbmd0b24gb3IgTW9uZ3BpbmcuIA0KPGJyPg0KDQoNCmBgYHtyfQ0KbmF0ICU+JSANCiAgZmlsdGVyKHN0YXRlID09ICJTaGFuIikgJT4lIA0KICBuYXRfdGFibGUoKQ0KYGBgDQoNCg0KPGJyPjxicj4NCg0KIyMjIFRhbmludGhhcnlpDQoNClRoZSBoaWdoIGNvbmZsaWN0IHNjb3JlIGluIFNpdHR3ZSBpcyBwcmltYXJpbHkgZHVlIHRvIHRoZSBtYXNzaXZlIHByZXNlbmNlIG9mIElEUHMgdGhlcmUuIFRvZ2V0aGVyLCBTaXR0d2UsIA0KDQoNCmBgYHtyfQ0KbmF0ICU+JSANCiAgZmlsdGVyKHN0YXRlID09ICJUYW5pbnRoYXJ5aSIpICU+JSANCiAgbmF0X3RhYmxlKCkNCmBgYA0KDQoNCg0KPGJyPjxicj4NCg0KIyMjIFlhbmdvbg0KDQpJdCBpcyBpbmNvbmNlaXZhYmxlIHRoYXQgRGFnb24gTXlvdGhpdCB3b3VsZCBoYXZlIGEgUElOIG9mIDEwOSwyNjkuIEFyZWFzIHRoYXQgYXJlIG11Y2ggcG9vcmVyLCBzdWNoIGFzIFRhaWtreWkgc2hvdWxkIGhhdmUgYSBoaWdoZXIgUElOIHRoYW4gdGhpcyBwZXJpLXVyYmFuIGluZHVzdHJpYWwgdG93bnNoaXAuIFNod2VweWl0aGFyLCByYW5rZWQgdGhpcmQsIGlzIGFuIHVwLWFuZC1jb21pbmcgdG93bnNoaXAgZnVsbCBvZiBob3RlbHMgYW5kIHNob3BwaW5nIGNlbnRyZXMsIHRob3VnaCBpdCBhbHNvIGhhcyBtYW55IGluZHVzdHJpYWwgYXJlYXMuIEkgYmVsaWV2ZSBCb2d5b2tlIE1hcmtldCBpcyBhbHNvIGluIFNod2VweWl0aGFyLiANCg0KPGJyPg0KDQpgYGB7cn0NCm5hdCAlPiUgDQogIGZpbHRlcihzdGF0ZSA9PSAiWWFuZ29uIikgJT4lIA0KICBuYXRfdGFibGUoKQ0KDQpgYGANCg0KPGJyPjxicj4NCg0KIyMjIExpbWl0YXRpb25zIG9mIHRoZSB0b3duc2hpcCBQSU5zDQoNClNvIGZhciwgdGhlIHByaW9yaXRpc2F0aW9uIGV4ZXJjaXNlIGhhcyBiZWUgZmFpcmx5IGFnbm9zdGljIGFib3V0IGNvbmZsaWN0IHZzLiBwcmUtZXhpc3RpbmcgdnVsbmVyYWJpbGl0eSwgY291bnRpbmcgdGhlIGhpZ2hlciBvZiB0aGUgdHdvIGZpZ3VyZXMgYXMgdGhlIGNhc2Vsb2FkIGZvciBlYWNoIHRvd25zaGlwLiBXZXJlIGEgc3RyYXRlZ2ljIGRlY2lzaW9uIHRvIGJlIG1hZGUgdG8gY2hhbmdlIHRvIGZvY3VzIG9ubHkgdG8gY29uZmxpY3QtYWZmZWN0ZWQgYXJlYXMsIHRoZW4gdGhlc2UgYWxsb2NhdGlvbnMgc2hvdWxkIHNoaWZ0IHN1YnN0YW50aWFsbHkuIA0KDQpgYGB7ciBldmFsID0gRkFMU0V9DQpuYXQgJT4lIA0KICB3cml0ZV9jc3YoIi4vZGF0YS9kcmFmdF9waW5fZGF0YXNldC5jc3YiKQ0KYGBgDQoNCg==